// 同时发送异步代码的次数
var config = require("../config.js");
let ajaxTimes = 0;
export const request = (url,parmas) => {
  // 当有地方调用请求方法的时候，就增加全局变量，用于判断有几个请求了
  ajaxTimes++;
  // 显示加载中loading效果
  wx.showLoading({
    title: "加载中",
    mask: true //开启蒙版遮罩
  });
  if (!parmas.method) {
    parmas.method = "POST"
  }
  let myHeader = {
    ...parmas.header
  };
  if (true) {
    // 往myHeader这个对象里插入键值对 带上Storage中存储的token
    myHeader["authorization"] = wx.getStorageSync("authorization");
  }
  // 基础url
  const baseUrl = config.domain
  return new Promise((resolve, reject) => {
    wx.request({
      ...parmas,
      url: baseUrl + url,
      header: {
        'content-type': 'application/json',
        ...myHeader
      },
      success: (result) => {
        // 微信wx.request把http = 500也封装到success了
        if (result.statusCode != 200) {
          wx.hideLoading({
            success: function () {
              //wx.showLoading 和 wx.showToast 同时只能显示一个
              wx.showToast({
                title: result.data.errMsg,
                icon: 'error',
                duration: 3000
              })
            }
          });
          reject(result.data.errMsg)
          return
        }
        if (result.header.authorization) {
          let authorization = result.header.authorization
          wx.setStorageSync("authorization", authorization);
        }
        // 请求成功，就将成功的数据返回出去
        resolve(result)
      },
      fail: (err) => {
        reject(err)
      },
      // 不管请求成功还是失败，都会触发
      complete: (ee) => {
        ajaxTimes--;
        // 此时就可以关闭loading效果了
        if (ajaxTimes === 0) {
          //  关闭正在等待loading效果
          wx.hideLoading();
        }
      }
    });

  })
}